#include "bitman.hh"
namespace dsp {
    namespace dvbs2 {
        namespace CODE {
            void xor_be_bit(uint8_t *buf, int pos, bool val) {
                buf[pos / 8] ^= val << (7 - pos % 8);
            }

            void xor_le_bit(uint8_t *buf, int pos, bool val) {
                buf[pos / 8] ^= val << (pos % 8);
            }

            void set_be_bit(uint8_t *buf, int pos, bool val) {
                buf[pos / 8] = (~(1 << (7 - pos % 8)) & buf[pos / 8]) | (val << (7 - pos % 8));
            }

            void set_le_bit(uint8_t *buf, int pos, bool val) {
                buf[pos / 8] = (~(1 << (pos % 8)) & buf[pos / 8]) | (val << (pos % 8));
            }

            bool get_be_bit(uint8_t *buf, int pos) {
                return (buf[pos / 8] >> (7 - pos % 8)) & 1;
            }

            bool get_le_bit(uint8_t *buf, int pos) {
                return (buf[pos / 8] >> (pos % 8)) & 1;
            }
        } // namespace CODE
    }
}
